<?php declare(strict_types=1);


namespace App\Model\Entity;

use Swoft\Db\Annotation\Mapping\Column;
use Swoft\Db\Annotation\Mapping\Entity;
use Swoft\Db\Annotation\Mapping\Id;
use Swoft\Db\Eloquent\Model;


/**
 * 活动挑战主题表
 * Class Challenge
 *
 * @since 2.0
 *
 * @Entity(table="challenge", pool="db2.pool")
 */
class Challenge extends Model
{
    /**
     * 
     * @Id()
     * @Column()
     *
     * @var int
     */
    private $id;

    /**
     * 主题
     *
     * @Column()
     *
     * @var string|null
     */
    private $them;

    /**
     * icon图标
     *
     * @Column()
     *
     * @var string|null
     */
    private $icon;

    /**
     * 背景图
     *
     * @Column(name="bg_cover", prop="bgCover")
     *
     * @var string|null
     */
    private $bgCover;

    /**
     * 挑战描述
     *
     * @Column()
     *
     * @var string|null
     */
    private $description;

    /**
     * 开始时间
     *
     * @Column(name="start_time", prop="startTime")
     *
     * @var int|null
     */
    private $startTime;

    /**
     * 截止时间
     *
     * @Column(name="end_time", prop="endTime")
     *
     * @var int|null
     */
    private $endTime;

    /**
     * 创建时间
     *
     * @Column(name="created_at", prop="createdAt")
     *
     * @var int|null
     */
    private $createdAt;

    /**
     * 更新时间
     *
     * @Column(name="updated_at", prop="updatedAt")
     *
     * @var int|null
     */
    private $updatedAt;

    /**
     * 1:启用 0:关闭
     *
     * @Column()
     *
     * @var int
     */
    private $status;

    /**
     * 普通排序
     *
     * @Column()
     *
     * @var int|null
     */
    private $ordid;

    /**
     * 推荐排序
     *
     * @Column(name="suggest_order", prop="suggestOrder")
     *
     * @var int|null
     */
    private $suggestOrder;

    /**
     * 1:发布时推荐显示 0:不推荐
     *
     * @Column(name="is_suggest", prop="isSuggest")
     *
     * @var int
     */
    private $isSuggest;

    /**
     * 参与人数
     *
     * @Column(name="join_number", prop="joinNumber")
     *
     * @var int
     */
    private $joinNumber;


    /**
     * @param int $id
     *
     * @return void
     */
    public function setId(int $id): void
    {
        $this->id = $id;
    }

    /**
     * @param string|null $them
     *
     * @return void
     */
    public function setThem(?string $them): void
    {
        $this->them = $them;
    }

    /**
     * @param string|null $icon
     *
     * @return void
     */
    public function setIcon(?string $icon): void
    {
        $this->icon = $icon;
    }

    /**
     * @param string|null $bgCover
     *
     * @return void
     */
    public function setBgCover(?string $bgCover): void
    {
        $this->bgCover = $bgCover;
    }

    /**
     * @param string|null $description
     *
     * @return void
     */
    public function setDescription(?string $description): void
    {
        $this->description = $description;
    }

    /**
     * @param int|null $startTime
     *
     * @return void
     */
    public function setStartTime(?int $startTime): void
    {
        $this->startTime = $startTime;
    }

    /**
     * @param int|null $endTime
     *
     * @return void
     */
    public function setEndTime(?int $endTime): void
    {
        $this->endTime = $endTime;
    }

    /**
     * @param int|null $createdAt
     *
     * @return void
     */
    public function setCreatedAt(?int $createdAt): void
    {
        $this->createdAt = $createdAt;
    }

    /**
     * @param int|null $updatedAt
     *
     * @return void
     */
    public function setUpdatedAt(?int $updatedAt): void
    {
        $this->updatedAt = $updatedAt;
    }

    /**
     * @param int $status
     *
     * @return void
     */
    public function setStatus(int $status): void
    {
        $this->status = $status;
    }

    /**
     * @param int|null $ordid
     *
     * @return void
     */
    public function setOrdid(?int $ordid): void
    {
        $this->ordid = $ordid;
    }

    /**
     * @param int|null $suggestOrder
     *
     * @return void
     */
    public function setSuggestOrder(?int $suggestOrder): void
    {
        $this->suggestOrder = $suggestOrder;
    }

    /**
     * @param int $isSuggest
     *
     * @return void
     */
    public function setIsSuggest(int $isSuggest): void
    {
        $this->isSuggest = $isSuggest;
    }

    /**
     * @param int $joinNumber
     *
     * @return void
     */
    public function setJoinNumber(int $joinNumber): void
    {
        $this->joinNumber = $joinNumber;
    }

    /**
     * @return int
     */
    public function getId(): ?int
    {
        return $this->id;
    }

    /**
     * @return string|null
     */
    public function getThem(): ?string
    {
        return $this->them;
    }

    /**
     * @return string|null
     */
    public function getIcon(): ?string
    {
        return $this->icon;
    }

    /**
     * @return string|null
     */
    public function getBgCover(): ?string
    {
        return $this->bgCover;
    }

    /**
     * @return string|null
     */
    public function getDescription(): ?string
    {
        return $this->description;
    }

    /**
     * @return int|null
     */
    public function getStartTime(): ?int
    {
        return $this->startTime;
    }

    /**
     * @return int|null
     */
    public function getEndTime(): ?int
    {
        return $this->endTime;
    }

    /**
     * @return int|null
     */
    public function getCreatedAt(): ?int
    {
        return $this->createdAt;
    }

    /**
     * @return int|null
     */
    public function getUpdatedAt(): ?int
    {
        return $this->updatedAt;
    }

    /**
     * @return int
     */
    public function getStatus(): ?int
    {
        return $this->status;
    }

    /**
     * @return int|null
     */
    public function getOrdid(): ?int
    {
        return $this->ordid;
    }

    /**
     * @return int|null
     */
    public function getSuggestOrder(): ?int
    {
        return $this->suggestOrder;
    }

    /**
     * @return int
     */
    public function getIsSuggest(): ?int
    {
        return $this->isSuggest;
    }

    /**
     * @return int
     */
    public function getJoinNumber(): ?int
    {
        return $this->joinNumber;
    }

}
